﻿using System;
using System.Collections.Generic;
using System.Linq;
using System.Web;
using System.Web.Security;
using System.Web.SessionState;
using Ninject;
using OAuth2.Repository;
using CommonServiceLocator.NinjectAdapter;
using Microsoft.Practices.ServiceLocation;
using OAuth2.Provider.IService;
using OAuth2.Provider.Service;

namespace OAuth2.ProviderSite
{
    public class Global : System.Web.HttpApplication
    {

        protected void Application_Start(object sender, EventArgs e)
        {
            IKernel kernel = new StandardKernel();

            #region Repos

            kernel.Bind<IClientRepository>().To<InMemoryClientRespository>();
            kernel.Bind<ITokenRepository>().To<InMemoryTokenRepository>();

            #endregion 

            #region service

            kernel.Bind<IAuthorizationGrantService>().To<AuthorizationGrantService>();
            kernel.Bind<ITokenService>().To<TokenService>();


            #endregion 



            NinjectServiceLocator adapter = new NinjectServiceLocator(kernel);

            ServiceLocator.SetLocatorProvider(() => adapter);
        }

        protected void Session_Start(object sender, EventArgs e)
        {

        }

        protected void Application_BeginRequest(object sender, EventArgs e)
        {

        }

        protected void Application_AuthenticateRequest(object sender, EventArgs e)
        {

        }

        protected void Application_Error(object sender, EventArgs e)
        {

        }

        protected void Session_End(object sender, EventArgs e)
        {

        }

        protected void Application_End(object sender, EventArgs e)
        {

        }
    }
}